package com.zzy.singleton.singleton1;

/**
 * 饿汉式（静态变量/静态代码块）
 * 基于类加载的方式避免了多线程的问题，但是没有懒加载的效果，如果从始至终没有使用过实例就造成资源浪费
 */
public class SingletonTest1 {
    public static void main(String[] args) {
        Singleton instance1 = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        System.out.println(instance1 == instance2);
        System.out.println("instance1.hashCode()>>>" + instance1.hashCode());
        System.out.println("instance2.hashCode()>>>" + instance2.hashCode());
    }


}

class Singleton {
    //构造器私有化，防止外部new
    private Singleton() {
    }

    //静态变量
//    private final static Singleton instance = new Singleton();

    //静态代码块
    private static Singleton instance;
    static {
        instance = new Singleton();
    }

    public static Singleton getInstance(){
        return instance;
    }
}